<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //前面两种创建对象方式一次只能创建一个对象
        //因为我们一次创建一个对象，里面很多的属性和方法是大量相同的，我们只能复制
        //可以利用函数的方法，重复这些相同的代码
        //构造函数    就是把我们对象里面一些相同的属性和方法抽象出来放到函数里面
        //************************************************************************
        //构造函数语法格式
        // function 构造函数名() {
        //     this.属性 = 值;
        //     this.方法 = function() {

        //     }
        // }
        // new 构造函数名();
        //**************************************************************************
        function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(sang) {
                console.log(sang);
            }
        }
        var ldh = new Star('刘德华', 18, '男'); //调用函数返回的是一个对象
        console.log(ldh.name);
        console.log(ldh['sex']);
        ldh.sing('冰雨');
        var zxy = new Star('张学友', 19, '男');
        console.log(zxy.name);
        console.log(zxy.age);
        zxy.sing('李香兰');
        //1,构造函数名字首字母要大写
        //2,我们不需要return  就可以返回结果
        //3,我们调用构造函数必需使用new
        //4,我们只要new Star（）调用函数就创建一个对象   ldh{}
        //5,我们的属性和方法前面必需添加this
    </script>
</head>

<body>

</body>

</html>